#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QDebug>
#include <QLabel>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // windowOpacity属性(设置半透明效果)

//    // 代码样例：实现两个按钮，一个按钮增加不透明度，一个按钮减少不透明度
//    QPushButton* up = new QPushButton(this);
//    QPushButton* down = new QPushButton(this);
//    up->setText("增加");
//    down->setText("减少");
//    // 设置位置
//    up->move(200, 300);
//    down->move(400, 300);
//    // 关联槽函数
//    connect(up, &QPushButton::clicked, this, &Widget::handlerUp);
//    connect(down, &QPushButton::clicked, this, &Widget::handlerDown);





    //cursor属性(修改鼠标光标的样式)
//    QCursor cursor(Qt::WaitCursor); // 也是不需要挂到对象树上
//    // 创建一个按钮
//    QPushButton* button = new QPushButton(this);
//    button->setText("按钮");
//    button->move(300, 300);
//    button->setCursor(cursor);

    // 我们也可以通过自定义的方式设置鼠标的光标样式
    // 通过QPixmap这样一个对象就表示一个图片

    // 访问到图片文件
//    QPixmap pixmap(":/title.png");
    // 构造一个光标对象
    //QCursor cursor(pixmap); // 直接将pixmap传递进来即可
    // 默认的情况是，鼠标点击时，相当于鼠标的左上角在进行点击
    // 如果想要修改默认的点击方式，可以在构造的时候再传一个坐标
//    pixmap = pixmap.scaled(30, 30); // 需要再重新赋值
//    QCursor cursor(pixmap, 10, 10);
//    // 而如果图片比较大的话，也可以将图片缩放


//    // 创建一个按钮
//    QPushButton* button = new QPushButton(this);
//    button->setText("按钮");
//    button->move(300, 300);
//    button->setCursor(cursor);


    // font属性(字体相关属性)
//    QLabel* label = new QLabel(this);
//    label->setText("这是一段文本!");
//    label->move(300, 300);
//    // 构造一个字体对象
//    QFont font; // 也是直接创建在栈上
//    font.setFamily("楷体"); // 设置字体
//    font.setPixelSize(30); // 设置大小
//    font.setBold(true); // 加粗
//    font.setItalic(true); // 设置倾斜
//    font.setUnderline(true);// 设置下划线
//    font.setStrikeOut(true); // 设置删除线
//    label->setFont(font);


    // toolTip属性(设置鼠标悬停提示信息)
//    QPushButton* button = new QPushButton(this);
//    button->setText("按钮");
//    button->move(300, 300);
//    button->setToolTip("这是一个按钮, 没啥用的!");
//    button->setToolTipDuration(3000); // 设置显示持续时间(单位：ms)




    // focusPolicy(控件获取焦点的方式)

    // styleSheet(类似通过Css设置widget的样式)
    // 样例：通过代码实现一个“夜间模式”的样式






}

Widget::~Widget()
{
    delete ui;
}

//void Widget::handlerUp()
//{
//    double opacity = this->windowOpacity();
//    if (opacity >= 1.0) { // 这个判断其实可以不写，但是最好还是写上，因为
//        return ;
//     }
//    qDebug() << "不透明度: " << opacity << endl;
//    opacity += 0.01; // 这里虽然设置的是精确值，但是实际窗口的不透明度的变化并非是精确的(原因自然就是小数在C++的默认存储中是无法精确存储的)
//    this->setWindowOpacity(opacity);
//}

//void Widget::handlerDown()
//{
//    double opacity = this->windowOpacity();
//    if (opacity <= 0.0) {
//        return ;
//     }
//    qDebug() << "不透明度: " << opacity << endl;
//    opacity -= 0.01;
//    this->setWindowOpacity(opacity);
//}

// 设置日间模式
void Widget::on_pushButton_light_clicked()
{
    // 设置窗口的样式
    this->setStyleSheet("background-color: rgb(240, 240, 240);");
    // 设置输入框的样式
    ui->plainTextEdit->setStyleSheet("background-color: white; color: black;");
    // 设置按钮的样式
    ui->pushButton_light->setStyleSheet("background-color:rgb(225,225,225); color:black");
    ui->pushButton_dark->setStyleSheet("background-color:rgb(225,225,225); color:black;");
}
// 设置夜间模式
void Widget::on_pushButton_dark_clicked()
{
    // 设置窗口的样式
    this->setStyleSheet("background-color: black;");
    // 设置输入框的样式
    ui->plainTextEdit->setStyleSheet("background-color: black; color: white;");
    // 设置按钮的样式
    ui->pushButton_light->setStyleSheet("background-color: rgb(64,65,66); color:white");
    ui->pushButton_dark->setStyleSheet("background-color: rgb(64,65,66); color:white;");
}
